1. Field of the Invention
The present invention relates generally to namespace uniqueness for computer programs during run-time and more particularly to namespace uniqueness for type definitions stored on smart cards and used by application software.
2. Description of the Related Art
Smart cards are small personal computing devices that are used to protect very sensitive information. Smart cards may be used to provide banking functions, access to health records, personalization of computer network access, secure building access, and many more functions. Smart cards are also used as subscriber identity modules (SIM) in certain mobile telephony networks.
A recent trend in smart card technology is so called multi-application smart cards. These cards may be programmed with multiple disjointed application programs. For example, the same card may be used to access both banking records as well as provide health care information. The different applications running on a smart card may be written by the same author or may come from different vendors. Examples of multi-application cards include the Cyberflex family of cards from Axalto Inc.
A common feature of multi-application smart cards is that the application programs may be loaded onto the smart card after the card has been issued by the manufacturer or even after an end-user has taken possession of the card. Each such application program in a multi-application smart card is stored in some form of programmable memory on the smart card.
Applications written for multi-application smart cards are usually developed in high level languages such as C# or Java and then converted to a format appropriate for smart cards. The process of preparing applications for a smart card may involve compiling the high level source code into an intermediate binary format and then converting the intermediate format to a smart card specific format. The smart card specific format is one that is optimized for the smart card environment. It is used to help conserve the limited memory and other resources provided by the smart card hardware and may also help provide security.
When multiple applications are loaded onto a smart card additional memory can be conserved by sharing common routines, data type definitions, and class type definitions between the applications. These common definitions and routines may be stored in libraries that are accessible by different applications. The applications reference the routines and type definitions by name. There is a potential for the same name to be defined in more than one library or application that is loaded onto a smart card making the name ambiguous. If an application attempts to access the definition by such a name the application cannot link to the correct definition. In a smart card environment the process that loads applications onto the card will reject the application if that situation occurs.
For .NET based smart cards the type definitions stored on the smart card are not necessarily stored in a text format. Instead, the conversion process, usually performed by a converter program of a smart card software development kit, produces the smart card specific format. As part of the conversion process the type definition names are converted from the high level language text format into a more compact binary format.
To make the type names more unique, additional information can be concatenated with the names before the conversion process. Several forms of additional information have been used to improve the uniqueness of the resulting codes: namespace names, library names, vendor names, etc. Although this method improves the uniqueness of the codes because of the greater likelihood that the library or vendor names used as components of the type definitions name will be unique, that technique does not completely solve the problem as there is still a high likelihood of a collision between the names of type definitions provided from two unrelated sources. Therefore, there is still a need for a method to produce a truly unique identification code from a type name.